package com.fa7.trabalho.controller;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;

import com.fa7.trabalho.dao.AutorizacaoDao;
import com.fa7.trabalho.dao.UsuarioAutorizacaoDao;
import com.fa7.trabalho.dao.UsuarioDao;
import com.fa7.trabalho.entidades.Autorizacao;
import com.fa7.trabalho.entidades.Perfil;
import com.fa7.trabalho.entidades.Usuario;
import com.fa7.trabalho.entidades.UsuarioAutorizacao;

@ManagedBean
public class CadastrarUsuarioBean {
	
	private Usuario usuario;
	
	private Perfil perfilUsuario;
	
	@ManagedProperty(name = "usuarioDao", value = "#{usuarioDao}")
	private UsuarioDao usuarioDao;
	
	@ManagedProperty(name = "usuarioAutorizacaoDao", value = "#{usuarioAutorizacaoDao}")
	private UsuarioAutorizacaoDao usuarioAutorizacaoDao;
	
	@ManagedProperty(name = "autorizacaoDao", value = "#{autorizacaoDao}")
	private AutorizacaoDao autorizacaoDao;
	
	private String testeModificacao;
	
	public CadastrarUsuarioBean(){
		usuario = new Usuario();
		perfilUsuario = new Perfil();
	}
	
	public String cadastrarUsuario(){
		try {		
			
			usuario.setPerfil(perfilUsuario);
			usuario.setEnable(true);
			Usuario novoUsuario = usuarioDao.save(usuario);
			usuarioDao.flush();
			
			Autorizacao roleUser = autorizacaoDao.findOne(1);
			
			UsuarioAutorizacao novoUsuarioAutorizacao = new UsuarioAutorizacao();
			novoUsuarioAutorizacao.setAutorizacao(roleUser);
			novoUsuarioAutorizacao.setUsuario(novoUsuario);
			
			usuarioAutorizacaoDao.save(novoUsuarioAutorizacao);
			usuarioAutorizacaoDao.flush();

			
		}catch(Exception e){
			System.out.println("erro:" + e.getMessage());
			return "";
		}
		return "login";
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public Perfil getPerfilUsuario() {
		return perfilUsuario;
	}

	public void setPerfilUsuario(Perfil perfilUsuario) {
		this.perfilUsuario = perfilUsuario;
	}

	public UsuarioDao getUsuarioDao() {
		return usuarioDao;
	}

	public void setUsuarioDao(UsuarioDao usuarioDao) {
		this.usuarioDao = usuarioDao;
	}

	public UsuarioAutorizacaoDao getUsuarioAutorizacaoDao() {
		return usuarioAutorizacaoDao;
	}

	public void setUsuarioAutorizacaoDao(UsuarioAutorizacaoDao usuarioAutorizacaoDao) {
		this.usuarioAutorizacaoDao = usuarioAutorizacaoDao;
	}

	public AutorizacaoDao getAutorizacaoDao() {
		return autorizacaoDao;
	}

	public void setAutorizacaoDao(AutorizacaoDao autorizacaoDao) {
		this.autorizacaoDao = autorizacaoDao;
	}

	public String getTeste() {
		return testeModificacao;
	}

	public void setTeste(String teste) {
		this.testeModificacao = teste;
	}

}
